1. 전 세계 코로나 데이터 소개

2019 Novel Coronavirus COVID-19 (2019-nCoV) Data Repository by Johns Hopkins CSSE 를 통하여 존스홉킨스 대학교에서 공개한 데이터셋으로 많은 데이터사이언티스트들의 코로나 바이러스에 대한 과학적 연구를 장려하기 위하여 공개되었음. 데이터는 WHO는 물론, 전 세계의 질병관리본부(CDC)에서 수집한 정보를 포함하고 있음.

분석개요

코로나 바이러스에 대한 간단한 탐색적자료분석 결과와 시각화 작업을 통하여 재미있는 요소를 확인하고자 함은 물론 위험성에 대하여 인식을 고도화함.

raw 데이터는 확진환자, 사망환자, 그리고 완치환자로 총 3개의 데이터셋으로 구성되며, 그 예시중 확진환자 데이터셋은 다음과 같이 각 국가별로 수집된 환자수에 대한 정보를 담고 있음.

원 데이터셋 예시
Province/State Country/Region Lat Long 1/22/20 ~ 3/23/20
NA Thailand 15 101 2 599
NA Japan 36 138 2 1086
NA Singapore 1.283 103.8 0 455
NA Nepal 28.17 84.25 0 2
NA Malaysia 2.5 112.5 0 1306
British Columbia Canada 49.28 -123.1 0 424

전처리 작업

  1. 열이름 재정의

  2. 변수 내 범주 재정의
  • 크루즈쉽 : 일본으로 간주
  • 대륙별 지정 국가명으로 변경
  1. 국가별 대륙정보 반영
  • 아시아, 미국, 아프리카, 유럽, 오세아니아
국가/대륙/일자별 코로나 질병 이벤트 합계
country continent date confirmed recovered death
Afghanistan Asia 1/22/20 0 0 0
Afghanistan Asia 1/23/20 0 0 0
Afghanistan Asia 1/24/20 0 0 0
Afghanistan Asia 1/25/20 0 0 0
Afghanistan Asia 1/26/20 0 0 0
Afghanistan Asia 1/27/20 0 0 0

주어진 데이터를 통하여 구축한 자료구조는 위와 같으며, 자료 내 관측치 중 결측값은 없음.

대륙별 코로나 추세 확인

  • 아프리카, 아메리카, 아시아, 유럽, 오세아니아

  • 코로나 활동 환자 수 : active = confirmed - recovered - deaths

  • 아시아가 발병근원지인 코로나 바이러스는 아시아, 유럽 이외 순으로 코로나 활동 환자 수가 많음.

대륙별 국가 수(평균 포함) 및 코로나 활동 환자 수
continent sum_count country_nth mean_count
Africa 7680 47 163.4
Americas 156751 38.98 4021
Asia 2046708 43 47598
Europe 1102470 46 23967
Oceania 8174 5 1635
  • 대륙별 코로나 환자수 유형

대륙별 코로나 환자수는 아시아가 압도적으로 많으며, 그 다음으로 유럽이 많음. 아시아의 경우, 점차적으로 완치환자가 증가하며, 활동환자는 줄어드는 추세를 보여 코로나 바이러스가 수그러드는 듯이 보이나, 이외의 대륙은 코로나 바이러스가 현재진행중임.

국가별 코로나 추세 확인

  • 가장 영향력이 심한 상위 10개국에 대한 국가별 활동 환자 수
코로나 영향이 가장 심한 상위 10개국 활동 환자 수
country type 합계
Italy active 46638
USA active 32855
Germany active 24513
Spain active 24421
France active 13170
Iran active 12022
Switzerland active 7016
South Korea active 5884
United Kingdom active 5392
China active 5351
  • 상위 10개 국의 시기별 환자수 변화

중국은 현재, 활동 환자수가 10000명 이하로 떨어져 코로나가 끝났다고 말하고 있으며, 한국과 일본 또한 점차 활동 환자수가 감소하고 있는 추세를 띄고 있다. 하지만 유럽 지역은 대부분 늦게 전파된 바이러스로 인하여 급속도로 환자수가 증가하고 있다.

사망률

앞서 확인한 가장 영향력이 심한 상위 10개국의 코로나 환자의 치사율. 즉, 사망률을 확인해보았음.

프랑스와 이탈리아 그리고 미국은 상대적으로 높은 사망률을 보이고 있음. 안타까운 사실로, 대부분의 국가에서 점차 사망률이 증가하는 것이 관측되고 있음.

지도상 시각화

  1. 세계 환자수 그림
  • 주황색 : 국가별 covid-19 확진자 수

  • 빨간색 : 국가별 사망한 환자 수

  • 초록색 : 국가별 완치한 환자 수

그림을 보면, 아시아 지역은 완치한 환자들의 수가 많아 시각적으로 두드러지게 표현되지만, 좌측에 보이는 유럽지역은 완치한 환자수가 적고, 확진자와 사망자 수가 시각적으로 표현된 것을 확인할 수 있음.

  1. 세계 COVID-19 환자 일자별 변화

중국 우한을 시작으로 퍼지게 된 코로나바이러스는 시간이 흐름에 따라 유럽, 전미 지역으로 퍼지는 것을 확인하였음.

2. 국내 코로나 동선 추적 데이터

마인즈랩, ‘코로나19 동선 추적 데이터셋’ 를 통하여 마인즈 랩에서 공개한 국내 코로나 19 동선 추적 데이터셋으로 과학적 연구 진행이 가능함.

분석개요

국내 코로나 바이러스 환자에 대하여 진행한 간단한 탐색적자료분석 결과와 동선 추적 데이터셋을 통하여 과학적으로 재미있는 요소를 확인하고자 함. 공개된 데이터셋은 환자정보에 대한 데이터셋과 이동경로 데이터셋으로 구분된다.

## # A tibble: 7,754 x 18
##    global_id local_id sex   birth_year country province disease group
##        <dbl> <lgl>    <chr>      <dbl> <chr>   <chr>      <dbl> <chr>
##  1         1 NA       fema…       1984 China   filtere…      NA <NA> 
##  2         2 NA       male        1964 Korea   filtere…      NA <NA> 
##  3         3 NA       male        1966 Korea   capital…      NA <NA> 
##  4         4 NA       male        1964 Korea   capital…      NA <NA> 
##  5         5 NA       male        1987 Korea   capital…      NA <NA> 
##  6         6 NA       male        1964 Korea   capital…      NA <NA> 
##  7         7 NA       male        1991 Korea   capital…      NA <NA> 
##  8         8 NA       fema…       1957 Korea   Jeollab…      NA <NA> 
##  9         9 NA       fema…       1992 Korea   capital…      NA <NA> 
## 10        10 NA       fema…       1966 Korea   capital…      NA <NA> 
## # … with 7,744 more rows, and 10 more variables: exposure_start <chr>,
## #   exposure_end <chr>, infection_reason <chr>, infection_order <dbl>,
## #   infected_by <dbl>, contact_number <dbl>, confirmed_date <chr>,
## #   released_date <chr>, deceased_date <chr>, state <chr>
변수별 결측값 비율
변수 결측비율
global_id 0
local_id 1
sex 0.9126
birth_year 0.9142
country 0
province 0.9438
disease 0.9964
group 0.9889
exposure_start 0.9536
exposure_end 0.9536
infection_reason 0.9801
infection_order 0.9954
infected_by 0.991
contact_number 0.9932
confirmed_date 0
released_date 0.9929
deceased_date 0.9954
state 0

환자데이터셋의 경우 결측비율이 너무 많아 분석에서의 사용이 불가능해보임.(확진자수 급증에 따라 성별정보는 집계가 안 된 것으로 보임)

## # A tibble: 4,043 x 8
##    global_id local_id start   end    type            latitude longitude province
##        <dbl> <chr>    <chr>   <chr>  <chr>              <dbl>     <dbl> <chr>   
##  1       200 busan_1  2/18/20 2/18/… school              35.2      129. Busan   
##  2       200 busan_1  2/18/20 2/18/… <NA>                NA         NA  <NA>    
##  3       200 busan_1  2/18/20 2/18/… local_governme…     35.2      129. Busan   
##  4       200 busan_1  2/19/20 2/19/… food                35.2      129. Busan   
##  5       200 busan_1  2/19/20 2/19/… house               NA         NA  <NA>    
##  6       200 busan_1  2/19/20 2/19/… subway_station      35.2      129. Busan   
##  7       200 busan_1  2/19/20 2/19/… church              35.2      129. Busan   
##  8       200 busan_1  2/20/20 2/20/… house               NA         NA  <NA>    
##  9       200 busan_1  2/20/20 2/20/… transportation      NA         NA  <NA>    
## 10       200 busan_1  2/20/20 2/20/… food                35.2      129. Busan   
## # … with 4,033 more rows
변수별 결측값 비율
변수 결측비율
global_id 0.1828
local_id 0.7212
start 0.01237
end 0.01237
type 0.2743
latitude 0.4833
longitude 0.4833
province 0.484

동선 데이터셋의 경우 환자번호에 따라 지역정보인 province의 결측치 보정이 필요하며, 방문유형(type)이나, 지역번호(local_id)는 결측치 보정이 불가능함.

전처리 작업

  1. 동선데이터의 경우 위경도, 지역정보 등의 추정은 어느정도 비슷한 지역에 머물럿을것이라 예측이 가능하지만, type, local_id 등의 변수는 추정이 불가능함. 확진자당 해당 요일에서 발생한 결측값을 보정하기 위하여, 요일당 방문지역에 대한 확률값을 계산하여 확률적으로 보정하였음.

  2. long/lat 위경도 정보 또한 다중대체법(Multiple Imputation by chained equations)을 통하여 보정하였음.

  3. KakaoAPI를 이용한 위경도별 행정구역 정보 수집 : 대상이 모호하여, 시도 정보만 수집하였음.

국내 지역별 코로나 환자의 활동성 정보

  • 데이터는 전체 환자의 이동경로를 포함하고 있지 않기에, 이 결과를 통하여 단정지을 수 없음.

  • 서울과 대구/경북 지역에 유난히 많은 활동량이 관측되었음.

2.1 shape 파일을 이용한 추세별 변화양상 확인

  1. 환자 이동경로 자료 내 각 지역을 시도 정보로 재분류과정
  • 위경도 정보를 바탕으로 시도정보로 구분하였음
  1. shape 파일이란 ?

shapefile 형식은 지리 정보에 널리 사용되는 지형 공간 벡터 데이터 형식이다. 흔히 말하는 GIS에 적합한 데이터형태이며, shapefile 형식은 예를 들어 우물, 강 및 호수를 나타내는 점, 선 및 다각형과 같은 벡터 기능을 공간적으로 설명한다. 이때, 각 항목에는 일반적으로 이름이나 온도로 표현하는 속성 정보가 포함되어 있습니다.

위 그림은 대한민국의 행정구역 경계(시도 기준)를 통하여 표현된 shapefile에 대한 시각화 정보임.

  1. 일자별 바이러스 환자의 활동성 비교

공개된 데이터셋 내에는 1월 말부터 3월 초까지의 환자가 방문한 지역에 대한 위치정보가 포함되어 있음.

3월초 급증한 코로나 환자수를 보아, 환진 판정을 받은 환자들이 코로나바이러스 잠재기간인 2월 중순 ~ 말 시점에 활발히 움직였기에, 위와 같은 결과가 도출되었음.

3. 국내 코로나 동선 추적 데이터(서울시)

분석개요

다소 결측값의 비율이 적은 서울시 코로나확진자 데이터셋을 이용하여 그들의 이동경로와 감염사유 등을 통하여 인사이트를 도출함. 서울시의 경우, 확진자의 동선이 역학조사를 통하여 다소 상세하게 기록되고 있음.

  1. 환자정보 데이터셋
환자정보 자료 변수별 결측값 비율
변수 결측비율
local_id 0
global_id 0.01418
country 0
sex 0
birth_year 0
infection_reason 0
infected_by 0.883
travel_history 0.8936
confirmed_date 0
province 0
city 0.01064
  1. 이동경로 정보 데이터셋
이동경로 정보 변수별 결측값 비율
변수 결측비율
global_id 0.01949
local_id 0
start 0
end 0
type 0
latitude 0.5337
longitude 0.5337
province 0.5337
city 0.5337

전처리 작업

1. 열 제거 및 결측치 제거

  • 감염경로(infected_by)는 자료 내 관측치가 많으며, 감염경로 환자번호의 최대 수가 4로 무의미하여 제거함.
상위 6개 감염경로(환자번호)
infected_by count
NA 249
6 4
780 3
794 2
6832 2
7923 2
  • 여행경로(travel_history) 또한 자료 내 관측치가 많으며, 최대 수가 4로 무의미하여 제거함.
상위 6개 여행경로(여행지)
travel_history count
NA 252
Singapore 4
Philippines 3
China (Wuhan) 2
France 2
Spain 2
  • 시 정보가 결측치인 관측치는 감염사유와 지역정보를 통하여 잘못 기록된 데이터로 판단하여 제거함.
잘못 오기된 자료 제거 (continued below)
local_id global_id country sex birth_year infection_reason
18 111 Korea male 2000 living in Daegu
46 1246 Korea female 1999 Myungsung church
123 7243 Korea female 1941 living in Daegu
confirmed_date province city
2/20/20 Daegu NA
2/25/20 Gyeongsangbuk-do NA
3/8/20 Daegu NA

2. 재범주화

  1. 구로구콜센터
  2. 성동구주상복합
  3. 병원발
  4. 종교활동발(교회, 신천지3명 포함)
  5. 확진자접촉
  6. 외부지역(해외, 대구 등 포함)
  7. 조사중
  8. 기타

아래의 사유를 8개 범주로 재범주화하여 진행함.

감염사유 재범주화 및 비중
infection_reason category count
Guro-gu call center 구로구콜센터 57
Overseas travel 외부지역 33
Under investigation 조사중 33
contact with call center employee 확진자접촉 28
contact with patient 확진자접촉 23
Dongdaemun-gu church & arcade 종교활동발 20
contact with patient from different provice 확진자접촉 19
Eunpyeong-gu St. Mary’s Hospital 병원발 14
Seongdong-gu residental complex management office 성동구주상복합 13
contact with patient (suspect) 확진자접촉 10
Dongdaemun-gu caregiver 병원발 8
Daegu visit 외부지역 6
a real estate agency 기타 3
contact with patient from Daegu 확진자접촉 3
construction site in Yeouido 기타 2
Shincheonji Church of Jesus (suspect) 종교활동발 2
Myungsung church 종교활동발 1
National Police Hospital 병원발 1
Seoul regenerative hospital 병원발 1
Shincheonji Daegu Church of Jesus 종교활동발 1
shopping mall 기타 1

시각화

1. 요소별 확진자 수 비교

  1. 나이대별 확진자 수

spline 결과 내 구간의 폭을 보았을 때, 30대 구간에서 여성에 비하여 남성의 확진자 수가 많고, 40-50대 여성의 환자 수가 많은 것을 확인할 수 있음.

  1. 서울시 내 감염사유별 확진자 수

8개 범주에 대한 확진자들의 감염사유는 위와 같이 확진자를 통한 접촉이 많고, 다음으로 집단감염 형태의 사유로 구성됨. 구로구콜센터, 병원발에서 여성의 성비가 높게 나오고, 이외에 요소에서 남성의 성비가 높게 나옴. 앞에서 구로구콜센터의 성비와 확인한 40-50대의 여성의 성비를 비교하였을 떄, 구로구 콜센터의 직원이 주로 40-50대의 여성일 것이라 추측 가능함.

  1. 일자별 확진자 수

일자별 확진자 수는 3월초 급증하다가, 다소 감소한 추세를 보이고 있음.

  1. 서울시 내 거주지역별 확진자 수

확진자들은 중랑구, 금천구, 서대문구, 서초구 순으로 거주자가 많음.

  1. 일자/거주지역별 확진자수 변화

  1. 서울시 내 활동지역 정보

행정구별 확진자 활동량을 확인하기 위하여 지도상 시각화

4. 코로나 확진자 수 예측

분석개요

단변량 자료인 확진자 수 데이터를 이용하여, 향후 코로나 확진자 수를 예측하기 위하여 이전 시점의 관측값을 설명변수로 하는 단변량 LSTM 모델을 구축함. 미래 시점에 대해서는, 이전 시점에 예측된 관측치를 설명변수로 하였고, 학습된 데이터셋이 다소 적은 관측치를 가지고, 단조증가하는 구조로 예측에 적합하지 않는 데이터셋일 수 있음.(다소 적은 관측치로 인하여 부정확한 결과가 도래될 수 있음)

데이터 분리

  • 훈련 데이터셋 : 1/22 ~ 3/10
  • 검증 데이터셋(https://coronaboard.kr 참고) : 3/11 ~ 3/20
  • 예측 데이터 : 향후 1달 간의 확진자 수

모델링

LSTM은 RNN의 특별한 한 종류로, 긴 의존 기간을 필요로 하는 학습을 수행할 능력을 갖고 있다. LSTM은 Hochreiter & Schmidhuber (1997)에 의해 소개되었고, 그 후에 여러 추후 연구로 계속 발전하고 유명해졌다. LSTM은 여러 분야의 문제를 굉장히 잘 해결했고, 지금도 널리 사용되고 있다. 핵심으로 RNN 구조는 다음 단계를 예측하는 데 있어서, 이전 정보를 활용한다. 하지만 다소 긴 이전 시점의 자료들이 가지는 정보가 잘 잊혀지는 문제가 있다. 이 문제점을 LSTM은 셀상태와 3개의 게이트를 가지는 구조로 시퀀스상 멀리 있는 요소들이 가지는 정보를 잘 전달할 수 있게 하였음.

  • 셀상태는 기존 신경망의 은닉층이라고 생각할 수 있음.

  • 셀상태를 갱신하기 위해 기본적으로 3가지의 게이트가 필요함.
    1. Forget 게이트 : 이전 단계의 셀 상태를 얼마나 기억할 지 결정합니다.(0과 1 사이 확률값)
    2. input 게이트 : 새로운 정보의 중요성에 따라 얼마나 반영할지 결정합니다.
    3. output 게이트 : 셀 상태로부터 중요도에 따라 얼마나 출력할지 결정합니다.

    게이트 : 가중치(weight)를 가진 은닉층으로 생각할 수 있으며, 각 가중치는 sigmoid층에서 계산되어 0과 1사이의 값을 가짐.

예측결과

예측결과를 보았을 때, LSTM 모형의 학습자료가 지속적으로 증가하는 형태를 띄었기에, 예측결과 또한 꾸준히 증가하여 한달 후 약 15000명의 확진자까지로 증가하는 추세를 보임.

5. 결론

  1. 사망률이 지속적으로 증가하고 있는 점과, 확진자 수의 증가하는 추세가 다소 수그러 들었음에도 이대로 가다가는 정말 위험할 수 있다.

  2. 코로나 확진자 수 감소를 위하여 사회적 거리두기 및 2주간 잠시 멈춤에 적극 동참합시다!